home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / nlist.mcc / examples / nlist_example.d < prev    next >
Encoding:
Text File  |  2002-10-28  |  5.6 KB  |  163 lines

  1. /*
  2.    A simple example of using NList, NListview and NFloattext in AmigaE
  3.    Written by Piotr Pawlow (PP/UNION)
  4. */   
  5.  
  6. MODULE 'lib/amiga','utility/tagitem','mui/nlist_mcc','mui/nlistview_mcc',
  7.        'mui/nfloattext_mcc','muimaster','libraries/mui','libraries/asl','workbench/startup'
  8.  
  9. DEF app,wi_Master,MUIMasterBase
  10.  
  11. PROC main()
  12.   DEF signal,opened,filename,rdargs,args:PTR TO LONG
  13.   DEF buf,nlist,filenameobj,retid,nfloattext
  14.   DEF wb:PTR TO WBStartup,filename2,filename2obj,buf2
  15.  
  16.   IF (wb:=wbmessage) THEN CurrentDir(wb.ArgList.Lock)
  17.  
  18.   args:=[0,0]
  19.  
  20.   IF (rdargs:=ReadArgs('NLISTFILE=NF,FLOATTEXTFILE=FF',args,0))=0 THEN Raise('Wrong arguments')
  21.  
  22.   IF args[0] THEN filename:=args[0] ELSE filename:='nlist_example.txt'
  23.   IF args[1] THEN filename2:=args[1] ELSE filename2:='nfloattext_example.txt'
  24.  
  25.   IF (MUIMasterBase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN
  26.     Raise('failed to open muimaster.library')
  27.  
  28.   app := ApplicationObject,
  29.     MUIA_Application_Title      , 'NList Example',
  30.     MUIA_Application_Version    , '$VER: NList Example 1.0 (14.10.96)',
  31.     MUIA_Application_Author     , 'Piotr Pawlow (PP/UNION)',
  32.     MUIA_Application_Description, 'Just a little example...',
  33.     MUIA_Application_Base       , 'NL_EXAMPLE',
  34.     SubWindow, wi_Master := WindowObject,
  35.       MUIA_Window_ID, "MAIN",
  36.       MUIA_Window_Title, 'NList Example',
  37.       MUIA_Window_ActiveObject,nlist,
  38.       MUIA_Window_Height,MUIV_Window_Height_Visible(80),
  39.       MUIA_Window_Width,MUIV_Window_Width_Visible(80),
  40.       WindowContents, RegisterGroup(['NList','NFloattext',0]),
  41.         Child, VGroup, GroupFrameT('NList class'),
  42.           Child, nlist:=NListviewObject,
  43.             MUIA_CycleChain,MUI_TRUE,
  44.             MUIA_NListview_NList,NListObject,
  45.               MUIA_NList_DragSortable,MUI_TRUE,
  46.               MUIA_NList_ShowDropMarks,MUI_TRUE,
  47.               MUIA_NList_MultiSelect,MUIV_NList_MultiSelect_Default,
  48.             End,
  49.           End,
  50.           Child, HGroup,
  51.             Child, KeyLabel2('File:',"F"),
  52.             Child, PopaslObject,
  53.               MUIA_Popstring_String, filenameobj:=StringObject,
  54.                 MUIA_CycleChain,MUI_TRUE,
  55.                 MUIA_String_MaxLen,138,
  56.                 StringFrame,
  57.                 MUIA_ControlChar,"f",
  58.               End,
  59.               MUIA_Popstring_Button, PopButton(MUII_PopFile),
  60.               ASLFR_TitleText, 'Please select a file...',
  61.               ASLFR_RejectIcons,TRUE,
  62.             End,
  63.           End,
  64.         End,
  65.         Child, VGroup, GroupFrameT('NFloattext class'),
  66.           Child, NListviewObject,
  67.             MUIA_CycleChain,MUI_TRUE,
  68.             MUIA_NListview_Horiz_ScrollBar,MUIV_NListview_HSB_None,
  69.             MUIA_NListview_NList,nfloattext:=NFloattextObject,
  70.               MUIA_Floattext_Justify,MUI_TRUE,
  71.             End,
  72.           End,
  73.           Child, HGroup,
  74.             Child, KeyLabel2('File:',"F"),
  75.             Child, PopaslObject,
  76.               MUIA_Popstring_String, filename2obj:=StringObject,
  77.                 MUIA_CycleChain,MUI_TRUE,
  78.                 MUIA_String_MaxLen,138,
  79.                 StringFrame,
  80.                 MUIA_ControlChar,"f",
  81.               End,
  82.               MUIA_Popstring_Button, PopButton(MUII_PopFile),
  83.               ASLFR_TitleText, 'Please select a file...',
  84.               ASLFR_RejectIcons,TRUE,
  85.             End,
  86.           End,
  87.         End,
  88.       End,
  89.     End,
  90.   End
  91.  
  92.   IF app=NIL THEN Raise('Failed to create application.')
  93.  
  94.   DoMethodA(wi_Master,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
  95.   DoMethodA(filenameobj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOAD"])
  96.   DoMethodA(filename2obj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOD2"])
  97.     
  98.   set(wi_Master,MUIA_Window_Open,MUI_TRUE)
  99.   get(wi_Master,MUIA_Window_Open,&opened)
  100.   IF opened=FALSE THEN Raise('Failed to open window.')
  101.  
  102.   buf2:=loadcontents(filename2)
  103.   set(filename2obj,MUIA_String_Contents,filename2)
  104.   IF buf2 THEN set(nfloattext,MUIA_NFloattext_Text,buf2)
  105.   buf:=loadcontents(filename)
  106.   set(filenameobj,MUIA_String_Contents,filename)
  107.   IF buf THEN DoMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
  108.  
  109.   REPEAT
  110.     retid:=DoMethodA(app,[MUIM_Application_NewInput,&signal])
  111.     IF retid="LOAD" THEN buf:=loadnew(buf,nlist,filenameobj)
  112.     IF retid="LOD2" THEN buf2:=loadnew2(buf2,nfloattext,filename2obj)
  113.     IF (signal) THEN Wait(signal)
  114.   UNTIL retid=MUIV_Application_ReturnID_Quit
  115.   
  116.   set(wi_Master,MUIA_Window_Open,FALSE)
  117.  
  118. EXCEPTDO
  119.   IF rdargs THEN FreeArgs(rdargs)
  120.   IF app THEN MUI_DisposeObject(app)
  121.   IF MUIMasterBase THEN CloseLibrary(MUIMasterBase)
  122.   IF exception THEN WriteF('\s\n',exception)
  123. ENDPROC
  124.  
  125. PROC loadcontents(filename)(PTR)
  126. DEF len,handle,buf:PTR TO CHAR
  127.   len:=FileLength(filename)
  128.   IF handle:=Open(filename,OLDFILE)
  129.     IF (buf:=New(len+1))=0
  130.       info('Not enough memory')
  131.       RETURN 0
  132.     ENDIF
  133.     IF (Read(handle,buf,len)=-1) OR (len<1)
  134.       Close(handle)
  135.       info('Failed to read file %s',[filename])
  136.       RETURN 0
  137.     ENDIF
  138.     Close(handle)
  139.   ELSE
  140.     info('Failed to open file %s',[filename])
  141.     RETURN 0
  142.   ENDIF
  143. ENDPROC buf
  144.  
  145. PROC info(text,args=0)(L) IS MUI_RequestA(app,wi_Master,0,0,'*_OK',text,args)
  146.  
  147. PROC loadnew(buf,nlist,stringobject)(PTR)
  148. DEF name
  149.   Dispose(buf)
  150.   DoMethodA(nlist,[MUIM_NList_Clear,0])
  151.   get(stringobject,MUIA_String_Contents,&name)
  152.   buf:=loadcontents(name)
  153.   IF buf THEN DoMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
  154. ENDPROC buf
  155.  
  156. PROC loadnew2(buf,nfloattext,stringobject)(PTR)
  157. DEF name
  158.   Dispose(buf)
  159.   get(stringobject,MUIA_String_Contents,&name)
  160.   buf:=loadcontents(name)
  161.   set(nfloattext,MUIA_Floattext_Text,buf)
  162. ENDPROC buf
  163.